ASP.Net এর মাধ্যমে ফাইল ডাউনলোড করা

Web Development - এএসপি ডট (ASP.Net) - ফাইল আপলোড এবং ডাউনলোড |
2
2

ASP.Net Core অ্যাপ্লিকেশনে ফাইল ডাউনলোড করার জন্য আপনি FileResult অথবা PhysicalFileResult ব্যবহার করতে পারেন। এটি ব্যবহারকারীদের কোনো নির্দিষ্ট ফাইল ডাউনলোড করার অনুমতি দেয়। ফাইল ডাউনলোড করতে হলে, প্রথমে সেই ফাইলটি সার্ভারে থাকতে হবে এবং পরে সেই ফাইলের ইউআরএল ব্যবহার করে ডাউনলোডের জন্য একটি রেসপন্স তৈরি করতে হবে।


ফাইল ডাউনলোডের জন্য প্রস্তুতি

ASP.Net Core অ্যাপ্লিকেশনে ফাইল ডাউনলোড করার জন্য সাধারণত তিনটি স্টেপ অনুসরণ করতে হয়:

  1. কন্ট্রোলারে ডাউনলোড ফাংশন তৈরি করা
  2. FileResult অথবা FileStreamResult ব্যবহার করে ফাইল রিটার্ন করা
  3. HTML বা জাভাস্ক্রিপ্ট ব্যবহার করে ফাইল ডাউনলোড ট্রিগার করা

কন্ট্রোলারে ফাইল ডাউনলোড ফাংশন তৈরি করা

প্রথমে একটি কন্ট্রোলার তৈরি করতে হবে যেখানে ফাইল ডাউনলোডের জন্য একটি অ্যাকশন মেথড থাকবে। এই মেথডে FileResult ব্যবহার করা হবে, যা ফাইলটি ডাউনলোড করার জন্য ব্যবহারকারীকে পাঠাবে।

১. FileResult ব্যবহার করে ফাইল ডাউনলোড করা

এখানে, ফাইলের পাথ নির্দিষ্ট করে ফাইলটি রিটার্ন করা হচ্ছে:

public class FileController : Controller
{
    public IActionResult DownloadFile(string fileName)
    {
        var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "files", fileName);

        // ফাইলটি আছে কিনা চেক করা
        if (!System.IO.File.Exists(filePath))
        {
            return NotFound(); // ফাইল না পাওয়া গেলে 404 রিটার্ন করা
        }

        var fileBytes = System.IO.File.ReadAllBytes(filePath); // ফাইল থেকে ডাটা পড়া
        return File(fileBytes, "application/octet-stream", fileName); // ফাইল রিটার্ন করা
    }
}

এখানে:

  • fileName প্যারামিটারটি ফাইলের নাম হিসেবে ব্যবহৃত হচ্ছে।
  • Path.Combine ব্যবহার করে ফাইলটির সম্পূর্ণ পাথ তৈরি করা হচ্ছে।
  • System.IO.File.Exists() ব্যবহার করে ফাইলের অস্তিত্ব চেক করা হচ্ছে।
  • File() মেথডটি ফাইলের কন্টেন্ট এবং MIME টাইপ পাঠানোর জন্য ব্যবহৃত হচ্ছে। এখানে "application/octet-stream" MIME টাইপ ব্যবহার করা হয়েছে, যা সাধারণত কোনো বাইনারি ফাইলের জন্য ব্যবহার হয়।

২. PhysicalFileResult ব্যবহার করে ফাইল ডাউনলোড করা

যদি আপনার সার্ভারে কোনো ফাইল শারীরিকভাবে স্টোর করা থাকে, তবে আপনি PhysicalFileResult ব্যবহার করে সরাসরি ফাইলটি রিটার্ন করতে পারেন। এটি ফাইলের পাথ এবং MIME টাইপ সরাসরি নির্দিষ্ট করতে সক্ষম।

public class FileController : Controller
{
    public IActionResult DownloadFile(string fileName)
    {
        var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "files", fileName);

        // ফাইলটি চেক করা
        if (!System.IO.File.Exists(filePath))
        {
            return NotFound();
        }

        // ফাইল রিটার্ন করা
        return PhysicalFile(filePath, "application/octet-stream", fileName);
    }
}

এখানে, PhysicalFile() মেথডটি সরাসরি ফাইলের পাথ গ্রহণ করে এবং সেটি ডাউনলোড করার জন্য রিটার্ন করে।


HTML বা জাভাস্ক্রিপ্ট দিয়ে ফাইল ডাউনলোড ট্রিগার করা

ফাইল ডাউনলোড ট্রিগার করার জন্য, আপনি HTML লিংক অথবা জাভাস্ক্রিপ্টের মাধ্যমে কন্ট্রোলারের ডাউনলোড অ্যাকশন কল করতে পারেন।

১. HTML লিংক দিয়ে ডাউনলোড

এটি খুব সহজ উপায়, যেখানে আপনি সরাসরি href অ্যাট্রিবিউট ব্যবহার করে ফাইল ডাউনলোড লিংক তৈরি করতে পারেন:

<a href="/File/DownloadFile?fileName=test.pdf" download>Download PDF</a>

এখানে, href প্যারামিটারটিতে কন্ট্রোলারের ডাউনলোড ফাংশনের ইউআরএল এবং ফাইল নাম পাস করা হচ্ছে।

২. জাভাস্ক্রিপ্ট দিয়ে ডাউনলোড ট্রিগার

এছাড়া, আপনি জাভাস্ক্রিপ্ট ব্যবহার করেও ফাইল ডাউনলোড ট্রিগার করতে পারেন। নিচে একটি উদাহরণ দেয়া হলো:

<button onclick="downloadFile('test.pdf')">Download PDF</button>

<script>
    function downloadFile(fileName) {
        window.location.href = '/File/DownloadFile?fileName=' + fileName;
    }
</script>

এখানে, downloadFile() ফাংশনটি কন্ট্রোলারের ডাউনলোড ফাংশনে কল করবে এবং নির্দিষ্ট ফাইলটি ডাউনলোড করবে।


ডাউনলোড কন্ট্রোলারের নিরাপত্তা

ফাইল ডাউনলোড ফিচার তৈরি করার সময় কিছু নিরাপত্তা বিষয়ও মাথায় রাখতে হবে, যেমন:

  • ফাইলের পাথ ভ্যালিডেশন: ব্যবহারকারী যদি ইচ্ছাকৃতভাবে অন্য ফাইলের পাথ ইনপুট করতে চায়, তা ঠেকাতে ফাইল পাথ ভ্যালিডেশন করা উচিত।
  • অথরাইজেশন: শুধুমাত্র অনুমোদিত ব্যবহারকারীদের নির্দিষ্ট ফাইল অ্যাক্সেস দেওয়ার জন্য Authorization চেক করতে হবে।
public IActionResult DownloadFile(string fileName)
{
    if (!User.IsInRole("Admin"))
    {
        return Unauthorized(); // অনুমোদন ছাড়া ফাইল ডাউনলোড করা যাবে না
    }

    // বাকি কোড
}

সারাংশ

ASP.Net Core অ্যাপ্লিকেশনে ফাইল ডাউনলোডের জন্য FileResult, PhysicalFileResult এবং FileStreamResult ব্যবহার করা হয়। আপনি কন্ট্রোলারে ডাউনলোড ফাংশন তৈরি করে ফাইল পাঠাতে পারেন এবং HTML বা জাভাস্ক্রিপ্টের মাধ্যমে ব্যবহারকারীকে ডাউনলোডের জন্য নির্দেশনা দিতে পারেন।

Content added By
Promotion